Bash on Ubuntu on Windows

Noch ist „Bash on Ubuntu on Windows“ Beta, aber das Ding wird bald allgemein unter Windows Einzug halten. Das Windows Subsystem for Linux (WSL) ist wesentlich mehr als nur eine Bash-Shell: Es bildet das komplette Dateisystem eines Ubuntu ab und enthält unter /bin und /usr/bin alle typischen Kommandozeilenwerkzeuge. Über die Ubuntu-Repositories und apt-get install können weitere Werkzeuge nachinstalliert werden. Trotz noch bestehender Mängel ist der Eindruck evident, dass hier Microsoft in Zusammenarbeit mit Canonical (Ubuntu) ein ehrgeiziges und nachhaltiges Projekt auf die Beine stellt.

Einrichtung und erster Eindruck

Als Vorbereitung ist unter Windows 10 zunächst via Startmenü über „Einstellungen -> Update und Sicherheit -> Für Entwickler“ der „Entwicklermodus“ zu aktivieren.

Danach wird in der Systemsteuerung unter „Programme und Features -> Windows Features aktivieren“ das Paket „Windows Subsystem für Linux“ angeboten und kann durch ein Häkchen und „OK“ installiert werden. Dieser Vorgang wird auch in Zukunft optional bleiben, da typische Windows-User eine Linux-Shell in der Regel nicht vermissen.

Optionales Feature: Das Linux-Subsystems wird kein Windows-Standard, sondern muss vom Nutzer nachgerüstet werden.
Optionales Feature: Das Linux-Subsystems wird kein Windows-Standard, sondern muss vom Nutzer nachgerüstet werden.

Nach dieser Aktion findet sich im Windows-Startmenü das neue Programm „Bash on Ubuntu on Windows“, das den kleinen Bash-Launcher aufruft (bash.exe). Falls das Startmenü den Link nicht anbietet, starten Sie die bash.exe manuell in Cmd-Konsole im Pfad \Windows\System32.

Neuerdings (2016 noch nicht beobachtet) kann sich noch eine kleine Hürde einstellen: Wenn der Aufruf der bash.exe mit der Meldung „Zur Verwendung dieses Features muss die Legacykonsole deaktiviert werden“ scheitert. klicken Sie rechts auf die Titelleiste der Cmd.exe und deaktivieren auf der Registerkarte „Optionen“ das Kästchen vor „Legacykonsole“:

Danach erledigt der Aufruf der bash.exe die eigentliche Installation des minimalen Ubuntu vom Canonical-Server. Am Ende werden Sie aufgefordert, ein (sudo-berechtigtes) Benutzerkonto und dessen Passwort anzulegen. Ab sofort ist die Bash-Shell einsatzbereit.

Die eigentliche Ubuntu-Umgebung befindet sich im User-Kontext unter \user\[Konto]\AppData\Local\lxss, darunter liegt das Dateisystem \user\[Konto]\AppData\Local\lxss\rootfs mit der üblichen Verzeichnisstruktur und etwa 550 MB nach der Installation. Diese Ordner werden vom Windows-Explorer versteckt, sind aber mit direkter Eingabe in die Explorer-Adresszeile ebenso wie mit der Cmd-Kommandozeile problemlos zu erreichen.
Die Benutzung der „Bash on Ubuntu on Windows“ unterscheidet sich bei einfacheren Aufgaben weder funktional noch leistungstechnisch von einer Ubuntu-Shell. Wer sich schon mal mit der weitaus hakeligeren Cygwin-Bash beschäftigt hat, wird in jeder Hinsicht positiv überrascht sein. Es gelingt uns mühelos, mit dem ssh-Client Verbindung zu unseren Servern aufzunehmen, was künftig die Windows-Clients Putty und Kitty weitgehend überflüssig machen könnte.

Bevorzugte Werkzeuge wie htop, nmap, inxi oder mc sind über apt-get problemlos nachinstalliert. Da der Midnight Commander hier auch SSH beherrscht, ist sehr bequemer Austausch des Windows-Systems mit Linux-Servern garantiert.

Für die direkte Zusammenarbeit mit Windows ist das Windows-Systemlaufwerk automatisch unter /mnt/c gemountet, was nach der Definition einiger Bash-Aliases schnell zum komfortablen Datenaustausch zwischen Windows-Desktop und Linux-Shell führt.

Weitere interne oder externe Laufwerke des Windows-Rechners sind gemäß den dort verwendeten Laufwerksbuchstaben unter /mnt/d, /mnt/e und so fort zu finden.

Der Befehl

uname -a

meldet brav ein 64-Bit-„GNU/Linux“ und

lsb_release -a

ein Ubuntu 14.04.5 LTS.

Zweimal das Verzeichnis /usr/bin: Das Dateisystem des Linux-Subsystems befindet sich im Benutzerkonto unter \Users\[Konto]\AppData\local\lxss.

Für Linux-Entwickler? Für Linux-User?

Schon das Freischalten des Subsystems mit der Option „Entwicklermodus“ macht deutlich, welche Zielgruppe Microsoft mit der „Bash on Ubuntu on Windows“ in erster Linie im Auge hat. Es sind Entwickler, die unter Linux mit Python, Ruby, Git und Gnu-Compiler arbeiten und dies theoretisch künftig auch unter Windows erledigen können. Microsoft behauptet allerdings auch, mit der Bash einfach nur eine gute Kommandoshell anbieten zu wollen, die dann auch normale Nutzer ansprechen soll (und natürlich solche, die an Bash gewöhnt sind). Einige Möglichkeiten tun sich da in der Tat zwanglos auf, zumal der Launcher bash.exe auch Parameterangaben vorsieht – etwa:

bash.exe myscript.sh
bash.exe -c "mc ~"

„Bash on Ubuntu on Windows“ ist ein unglaublich ambitioniertes Projekt, das jetzt schon überraschend viel kann und das unbedingt weitere Beobachtung verdient.

Der Vergleich zwischen der 2016 veröffentlichten „Bash on Ubuntu on Windows“ mit der aktuellen (Stand: 09.03.2017) zeigt, dass Microsoft und Canonical fleissig weiterentwickeln. Diverse Mängel bei der Bedienung, bei der Eingabe von Sonderszeichen  oder beim Scrollen im Editor, sind weitestgehend ausgeräumt.

Auch grafische Linux-Programme starten anstandslos, wenn unter Windows der X-Server xming (https://sourceforge.net/projects/xming/) installiert ist aud läuft. Grafische Tools hat das Ubuntu zwar zunächst nicht an Bord, sie sind aber über apt-get ebenso nachrüstbar wie Kommandozeilentools.

Als praktisches Highlight für den Benutzeralltag sehe ich die SSH-Shell-Verbindung im Midnight Commander. Umstandsloser, direkter und komfortabler  kann der unbeschränkte Dateiaustausch zwischen Windows und einem Linux-Server nicht stattfinden – auf der einen Seite das komplette Dateisystem des Linux-Rechners, auf der anderen Seite unter /mnt das komplette Dateisystem des Windows-Rechners. Die SSH-Clients Putty/Kitty haben bei mir weitgehend ausgedient.

Midnight-Commander mit SSH-Shell-Verbindung: Hier ist links der Windows-Desktop und rechts der Linux-Server im Bild.